package com.ll.studentservice.service;

import com.ll.studentservice.entity.EduKeInfo;
import com.ll.studentservice.entity.EduSign;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ll.studentservice.entity.EduStudent;
import com.ll.studentservice.entity.vo.*;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author ll
 * @since 2020-11-26
 */
public interface EduSignService extends IService<EduSign> {

    //以班级为入口,查询出所有需要签到的学生(List<Student>)
    List<EduStudent> getAllStudents(String classId);

    //查询指定日期指定第几节课所有未签到的学生
    List<EduNoSignStudentInfo> getAllNoSign(SignGetAllNOSignStudent signGetAllNOSignStudent);

    //查询指定日期指定第几节课所有已签到的学生
    List<EduSignStudentInfo> getAllSign(SignGetAllNOSignStudent signGetAllNOSignStudent);

    //获取将要进行签到课程的id(ke_info_id)
    String getKeInfoId(String classId);

    //获取将要签到的课程信息
    EduKeInfo findLaterSignCourseInfo(String classId);

    //获取当前要进行第几节课的签到
    //返回 one two three
    String getNoCourse();

    //查询今天第几节课所有已签到的学生
    List<EduSignStudentInfo> getAllSignByToday(SignGetSignStudentByTodayVo signGetSignStudentByTodayVo);

    //查询今天第几节课所有未签到的学生
    List<EduNoSignStudentInfo> getAllNoSignByToday(SignGetSignStudentByTodayVo signGetSignStudentByTodayVo);

    //修改某位学生的考勤信息(指定日期指定第几节课)
    boolean UpdateOneStudentSignInfo(SignUpdateOneStudentSignInfo signUpdateOneStudentSignInfo);

    //查询某位学生的考勤信息(指定日期指定第几节课)
    SignOneStudentSignInfoVo GetOneStudentSignInfo(SignGetOneStudentSignInfoVo signGetOneStudentSignInfoVo);

    //查询某位学生一天的考勤信息(指定日期指定学生Id)
    SignStudentSignInfoByOneDayVo getStudentSignInfoByOneDay(SignGetStudentSignInfoByOneDayVo signGetStudentSignInfoByOneDayVo);

    //查询某班某一天的考勤信息(指定班级Id指定日期)
    SignClassInfoByOneDayVo GetClassSignInfoByOneDay(SignGetClassSignInfoByOneDayVo signGetClassSignInfoByOneDayVo);

    //给某个学生某节课评分
    boolean addKeSocreWithStudent(KeScoreVO keScoreVO);

    //查询某学生一周的的考勤信息(指定学生Id指定第几周)
    SignStudentSignInfoByOneWeekVo GetStudentSignInfoByWeek(SignStudentSignInfoByWeekVo signStudentSignInfoByWeekVo);

    //获取当前是第几周
    String getNowWeek();

    //查询某班一周的的考勤信息(指定班级Id指定第几周)
    SignClassSignInfoByOneWeekVo getClassSignInfoByWeek(SignClassSignInfoByWeekVo signClassSignInfoByWeekVo);

    //获取某个班的学生人数
    int getClassStudentTotal(String classId);

    //查询某专业下所有班级某天的的考勤信息(指定专业Id指定日期)
    SignProfessionSignInfoByDayVo GetProfessionSignByDay(SignProfessioByDayVo signProfessioByDayVo);

    //查询某年级某专业某天的考勤信息(指定年级Id指定专业Id指定要查询的日期)
    SignProfessionSignInfoByDayVo getEqualGradeDisaffinityProfessionSignByDay(SignFindGradeAndProfessionByDayVo signFindGradeAndProfessionByDayVo);

    //查询某年级某专业某周的考勤信息(指定年级Id指定专业Id指定要查询的日期)
    SignProfessionSignInfoByDayVo getGradeProfessionSignByWeek(SignFindGradeAndProfessionByWeekVo signFindGradeAndProfessionByWeekVo);
}
